/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.modelo.Livro;
import br.com.foxinline.servico.LivroServico;
import br.com.foxinline.utilitario.Mensagem;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

/**
 *
 * @author cadomeireles
 */
@ViewScoped
@ManagedBean
public class ManagerPesquisarLivro implements Serializable {

    @EJB
    LivroServico livroServico;
    
    private Livro livroPesquisar;
    private Livro livroVisualizar;
    private Livro livroDeletar;

    private List<Livro> livros;
    
    private String visualizarId;
    
    @PostConstruct
    public void init() {
        instanciar();
        delegar();
    }
    
    private void instanciar() {
        this.livroDeletar = new Livro();
        this.livroPesquisar = new Livro();
        this.livros = new ArrayList<Livro>();
    }

    private void delegar() {
        Map<String, String> parametros = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        this.visualizarId = parametros.get("livroId");
        
        if (this.visualizarId != null) {
            this.livroVisualizar = livroServico.pesquisar(Long.parseLong(this.visualizarId));
        }
    }
    
    public void pesquisar() {        
        this.livros = livroServico.pesquisar(this.livroPesquisar);
    }
    
    public void limpar() {
        instanciar();
    }

    public void deletar() {
        livroServico.deletar(this.livroDeletar);
        pesquisar();
        ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
        FacesContext fc = FacesContext.getCurrentInstance();
        FacesContext.getCurrentInstance().addMessage("messages", new FacesMessage(FacesMessage.SEVERITY_INFO, "Livro excluído com sucesso!", ""));
        fc.getExternalContext().getFlash().setKeepMessages(true);

        try {
            context.redirect("pesquisarLivro.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(ManagerPesquisarLivro.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public String descricaoTrunk(String descricao) {
        if (descricao.length() > 125) {
            return descricao.substring(0, 125).concat("...");
        } else {
            return descricao;
        }
    }
    
    public Livro getLivroDeletar() {
        return livroDeletar;
    }

    public void setLivroDeletar(Livro livroDeletar) {
        this.livroDeletar = livroDeletar;
    }

    public Livro getLivroPesquisar() {
        return livroPesquisar;
    }

    public void setLivroPesquisar(Livro livroPesquisar) {
        this.livroPesquisar = livroPesquisar;
    }

    public Livro getLivroVisualizar() {
        return livroVisualizar;
    }

    public void setLivroVisualizar(Livro livroVisualizar) {
        this.livroVisualizar = livroVisualizar;
    }

    public List<Livro> getLivros() {
        return livros;
    }

    public void setLivros(List<Livro> livros) {
        this.livros = livros;
    }

}
